home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / jockey / handlers / fglrx.py < prev    next >
Text File  |  2009-10-25  |  3KB  |  76 lines

  1. # -*- coding: utf-8 -*-
  2. # (c) 2008 Canonical Ltd.
  3. # Author: Martin Pitt <martin.pitt@ubuntu.com>
  4. # License: GPL v2 or later
  5.  
  6. import XKit.xorgparser
  7. from jockey.xorg_driver import XorgDriverHandler
  8.  
  9. # dummy stub for xgettext
  10. def _(x): return x
  11.  
  12. class FglrxDriver(XorgDriverHandler):
  13.     def __init__(self, backend):
  14.         self._free = False
  15.         XorgDriverHandler.__init__(self, backend, 'fglrx', 'xorg-driver-fglrx',
  16.             'fglrx', 'ati', add_modules=['glx'], disable_modules=[],
  17.             name=_('ATI/AMD proprietary FGLRX graphics driver'),
  18.             description=_('3D-accelerated proprietary graphics driver for '
  19.                 'ATI cards.'),
  20.             rationale=_('This driver is required to fully utilise the 3D '
  21.                 'potential of some ATI graphics cards, as well as provide '
  22.                 '2D acceleration of newer cards.'))
  23.  
  24.     def enable_config_hook(self):
  25.         # TODO: this method should look for the right Screen section(s) and
  26.         # if none can be found, use section 0. use get_devices_from_serverlayout()
  27.  
  28.         # X.org does not work otherwise
  29.         if len(self.xorg_conf.globaldict['Screen']) == 0:
  30.             self.xorg_conf.makeSection('Screen', identifier='Default Screen')
  31.         
  32.         self.xorg_conf.addOption('Screen', 'DefaultDepth', '24', position=0, prefix='')
  33.         
  34.         # make sure that RGB path is not in the xorg.conf otherwise xorg will crash
  35.         it = 0
  36.         for section in self.xorg_conf.globaldict['Files']:
  37.             try:
  38.                 self.xorg_conf.removeOption('Files', 'RgbPath', position=it)
  39.             except (XKit.xorgparser.OptionException):
  40.                 pass
  41.             it += 1
  42.         
  43.         # remove any Disable "dri2" otherwise amdcccle will crash
  44.         module_sections = self.xorg_conf.globaldict['Module']
  45.         have_modules = len(module_sections) > 0
  46.         
  47.         if have_modules:
  48.             for section in module_sections:
  49.                 self.xorg_conf.removeOption('Module', 'Disable', value='dri2', position=section)
  50.  
  51.     def disable(self):
  52.         # make sure that fglrx-kernel-source is removed too
  53.         XorgDriverHandler.disable(self)
  54.         kernel_source = 'fglrx-kernel-source'
  55.         self.backend.remove_package(kernel_source)
  56.         return False
  57.  
  58.     def enables_composite(self):
  59.         '''Return whether this driver supports the composite extension.'''
  60.  
  61.         if not self.xorg_conf:
  62.             return False
  63.  
  64.         # the radeon X.org driver supports composite nowadays, so don't force
  65.         # installation of fglrx upon those users. Treat absent driver
  66.         # configuration as radeon, since that's what X.org should autodetect.
  67.         # Only suggest fglrx if people use something else, like vesa.
  68.         try:
  69.             if self.xorg_conf.getDriver('Device', 0) in ['fglrx', 'ati', 'radeon', None]:
  70.                 return False
  71.         except (XKit.xorgparser.OptionException, XKit.xorgparser.SectionException), error:
  72.             return False # unconfigured driver -> defaults to ati
  73.  
  74.         return True
  75.  
  76.